"""
@version:
@filename : 基础阶段综合练习
@author : liuhongjie
@projectname: day02
@time: 2022/04/16
"""

"""1、输入数字n，输出n天前的日期（time或者datatime模块:
import datetime
n = int(input("请输入你要查询几天前的日期："))
start = datetime.datetime.now()
result_time=start+datetime.timedelta(-n)
print(result_time)
"""

"""2、输出指定文件夹下有哪些文件或文件夹（实现ls命令， os）
import os
file=input('请输入想要输出的文件夹：')
if os.path.exists(file):
    if os.path.isfile(file):
        print(file)
    else:
        for i in os.listdir(file):
            print(i)
else:
    print('不存在')
"""

"""3、列表去重，并且从小到大排序
lst1= [2,5,6,3,5,9,1]
lst2 = []
for i in lst1:
    if i not in lst2:
        lst2.append(i)
lst2.sort()
print(lst2)
"""

"""4、如何在一个函数内部修改全局变量
a = 10
def name(x):
    print(x)
    global a
    a = 20
name(a)
print(a)
"""

"""5、如何跨模块共享全局变量
    import code
    from code import model
    print(model.a)
    print(model.b)
"""

"""6、python的基本数据类型有哪些？
字符串，列表，元组，字典，集合
"""

"""7、python中生成随机整数（1-10），随机小数（1-10），随机小数（0-1）的方法
import random
a = random.randint(1,10)
print(a)
b = random.uniform(1,10)
print('%.2f'%b)
c = random.random()
print('%.2f'%c)
"""

"""8、python中哪些是可变数据类型，哪些是不可变数据类型
可变数据类型：
    列表list和字典dict、集合set
不可变数据类型：
    整型int、浮点型float、字符串型string和元组tuple
有序序列：列表，字符串，元组（有序功能特点:索引 遍历 切片）
无序序列：集合，字典
"""

"""9、a+=1与a=a+1有什么区别
a+=1：
    1、首先 += ：python底层调用__iadd__()方法
    2、对于不可变对象：进行+=操作后，在栈中重新创建了新的对象。
    3、对于可变对象：不会在栈中重新创建新的对象。
a=a+1：
    1、首先 + ：python底层调用__add__()方法
    2、不可变对象：栈中重新创建新对象。
    3、可变对象：在栈中重新创建新对象
"""

"""10、什么是pep8？说出5点它的标准
    1.使用四个空格缩进，而不是制表符
    2.如果可以，尽量注释独占一行
    3.每一行代码控制在 80 字符以内
    4.使用有意义的，英文单词或词组命名变量，绝对不要使用汉语拼音
    5.所有 import 尽量放在文件开头，在 docstring 下面，其他变量定义的上面
"""

"""11、给定一个字符串，找出字符串第一个重复的字符
str1 = input('请输入一个字符串：')
str2 = ''
for i in str1:
    if i in str2:
        print(f'第一个重复的字符为{i}')
        break
    str2=str2+i
"""

"""12、简述深拷贝与浅拷贝
	深浅拷贝：主要是针对容器类型里面包含可变容器类型--》容器里面包容器
浅拷贝：只会拷贝第一层的数据地址
深拷贝：会拷贝每一层的值
"""

"""13、简述python内存机制
	引用计数为主，分代回收和标记清除为辅的垃圾回收方式，进行内存回收管理
	还引用了小整型缓冲池以及常用字符串驻留区的方式进行内存分配管理
"""

"""14、使用python实现冒泡排序，快速排序
冒泡排序：
def bub_sort(lst1):
    for i in range(len(lst1)-1):
        for j in range(len(lst1)-1-i):
            if lst1[j]>lst1[j+1]:
                lst1[j],lst1[j+1]=lst1[j+1],lst1[j]
    return lst1
print(bub_sort(lst1 = [4,2,7,5,6,3,1,9,8]))

快速排序：
def partition(nums,low,high):
    midresult=nums[low]
    i = low
    j = high
    while i<j:
        while i<j and nums[j]>=midresult:
            j-=1
        nums[i] = nums[j]
        while i<j and nums[i]<midresult:
            i+=1
        nums[j] = nums[i]
    nums[i]= midresult
    return i
def quicksort(arr,low,high):
    if low<high:
        pi = partition(arr,low,high)
        quicksort(arr,low,pi-1)
        quicksort(arr,pi+1,high)
        return arr
lst1 = [4,2,7,5,6,3,1,9,8]
print(quicksort(lst1,0,len(lst1)-1))
"""

"""15、验证一个字符串是否属于回文（从左到右，从右到左都是一样）
str1 = input('请输入一个字符串：')
str2 = str1[::-1]
if str1==str2:
    print('你输入的字符串属于回文')
else:
    print('你输入的字符串不属于回文')
"""



